专利摘要:
システム、方法及び装置は開示される。その中で処理ユニットは、グラフィックスパイプラインの外側のグラフィックスパイプラインデータ上で2次処理を実行するように構成され、2次処理からの出力は、グラフィックスパイプラインに利用可能になるようにグラフィックスパイプラインに統合されている。2次処理を使用するかどうかについて決定が行われる。そして、2次処理が使用されるべきである場合、1つ以上のコマンドを備えることができるコマンドストリームは、2次処理ユニットに提供されるので、そのユニットは、バッファに入れられたグラフィックスパイプラインデータ上で動作し、位置付けることができる。2次処理は、グラフィックスパイプライン処理モジュールとともに2次処理ユニットによるデータアクセスを同期させるように監視され、管理される。
公开号:JP2011505633A
申请号:JP2010536169
申请日:2008-11-26
公开日:2011-02-24
发明作者:ストリート、マイケル・ディー.
申请人:クゥアルコム・インコーポレイテッドQualcomm Incorporated;
IPC主号:G06T15-00
专利说明:

[0001] この開示は、グラフィック処理システムにおける並列処理に関し、特に、グラフィックス処理ユニット及び中央処理ユニットのような、他の処理ユニットに関して2次プロセッサの使用を同期させてこのような2次プロセッサによって処理されるデータをグラフィックス処理パイプラインに再統合することを含む、並列にグラフィックス処理を実行することに関する。]
背景技術

[0002] グラフィックス処理ユニット(GPU)は、表示デバイス上での表示のためにコンピュータ化されたグラフィックスを生成するのに使用される専用のグラフィックスレンダリングデバイスである。GPUは、汎用中央処理ユニット(CPU)とともに典型的に使用され、グラフィック画像データ、例えば、3次元のコンピュータ化されたグラフィック画像データを処理する。そのような場合、GPUは、多数の基本要素グラフィックスオペレーションを実行し、CPUを使用するよりも速く表示デバイス上で表示するための3次元画像を生成し、表示デバイス上で表示するために画像を描くことができる。典型的には、GPUは、ハードウェアにおいて若干の複雑なアルゴリズムを実行するハードウェアを含む。]
[0003] 典型的なGPUは、画像ジオメトリーを受け取り、パイプラインアプローチを使用して、例えば、表示デバイス上で表示のために出力することができるグラフィックスを生成する。典型的なグラフィックスパイプラインは、並列して動作する多数のステージを含み、1つのステージからの出力はおそらくパイプライン中の別のステージで使用される。例えば、典型的なグラフィックスパイプラインは、頂点シェーダ、基本要素アセンブリ、ビューポート変換、基本要素セットアップ、ラスター化、隠れた基本要素及びピクセル消去、属性セットアップ、属性補間及びフラグメントシェーダのステージを含む。]
[0004] 頂点シェーダは、画像のための画像ジオメトリーに適用され、画像ジオメトリー内で頂点の頂点座標及び属性を生成する。頂点属性は、例えば、頂点と関連づけられた色、法線及びテクスチャ座標を含む。基本要素アセンブリは、画像ジオメトリーに基づいて、頂点から、基本要素、例えば、点、線、及び三角形基本要素を形成する。変換を用いて、例えば正規化されたデバイス空間からスクリーン空間へ基本要素を変換するビューポート変換を用いて、形成された基本要素は、ある空間から別の空間に変換することができる。基本要素セットアップは、基本要素の領域、エッジ係数を決定し、オクルージョンカリング(例えば、バックフェースカリング)及び3−Dクリッピングオペレーションを実行するために用いることができる。]
[0005] ラスター化は、基本要素内での頂点のXY座標と基本要素に含まれるピクセル数とに基づいて、基本要素をピクセルに変換する。隠れた基本要素及びピクセル消去は、基本要素及び/またはピクセルのz座標を使用し、隠されることが決定されたこれらの基本要素及びピクセル(画像フレームにおいて別の基本要素またはピクセルの後に配置されている基本要素またはピクセル、透明な基本要素またはピクセル)を決定して、消去する。属性セットアップは、基本要素内でピクセルと関連づけられた属性に対して、属性勾配、例えば水平の(X)方向または垂直の(Y)方向のいずれか一方において動く基本要素内で、第1のピクセルでの属性値及び第2のピクセルでの属性値間の差を決定する。属性補間は、決定された属性勾配値に基づいて、基本要素内のピクセル上にわたる属性を補間する。補間された属性値は、ピクセルレンダリングのためにフラグメントシェーダに送られる。フラグメントシェーダの結果は、表示デバイス上での処理された画像のプレゼンテーションのために、後の処理ブロック及びフレームバッファに出力することができる。]
[0006] 増加されたスループットを達成するためにグラフィックスパイプライン処理を促進することは有益である。グラフィックスパイプラインの一部を実行するソフトウェアを最適化することによってスループットを増加するために努力がされている。しかしながら、最適化されたプログラムコードを生成するのにかなりのプログラマの労力及び時間を典型的に必要とするので、このようなアプローチはコストがかかる。増加されたスループットは、専用のハードウェアを用いて達成されるかもしれない。しかしながら、このようなアプローチは、専用のハードウェアのための付加的なコストを必要とする。そのハードウェアは、専用の目的のために使用されるためだけに利用可能である。]
概要

[0007] 本開示は、技術的な欠点を取り扱い、このような処理と関連づけられたデータ依存を識別し、このようなデータ依存を満足させるために2次処理ユニットによって生成された出力をグラフィックス処理パイプラインに統合するために、グラフィックス処理ユニット及び/または中央処理ユニットのような、他の処理ユニットによって実行される処理を補足するために、2次処理ユニットを使用してグラフィックス処理パイプラインにおいてグラフィックス処理を実行してグラフィックス画像処理において効率を提供しようと努める。]
[0008] システム、方法及び装置が開示されている。その中で処理ユニットは、グラフィックスパイプラインの外側のグラフィックスパイプラインデータ上で2次処理を実行するように構成され、2次処理からの出力はグラフィックスパイプラインに利用可能になるようにグラフィックスパイプラインに統合されている。2次処理を使用するかどうかについて決定が行われる。そして、2次処理が使用されるべきである場合、1つ以上のコマンドを含むことができるコマンドストリームは2次処理ユニットに提供されるので、そのユニットは、バッファに入れられたグラフィックスパイプラインデータ上に位置付けられ、グラフィックスパイプラインデータ上で動作することができる。2次処理は、グラフィックスパイプラインにおいて1つ以上の処理モジュール及び2次処理によるデータアクセスを同期させるように管理され、監視される。]
[0009] 本開示の実施形態に従うと、グラフィックス処理パイプラインとともに2次処理ユニット、すなわち2次プロセッサを使用するための機会は識別され、グラフィックスパイプラインデータは2次処理ユニットに利用可能になる。2次処理ユニットによって生成されたグラフィックスパイプラインデータは、グラフィックスパイプラインに再統合される。制限しない例として、2次プロセッサは、デジタル信号プロセッサである。デジタル信号プロセッサは、グラフィックスパイプラインからデジタル信号プロセッサに利用可能になった色データからlit色を生成するように照射処理モジュールとして構成されている。]
[0010] そうすることにおいて、本開示の実施形態は、利用可能な2次プロセッサを使用して処理負荷のバランスを保たせるための能力を提供する。そうでなければアイドルであるままであるかもしれない2次プロセッサを使用して、グラフィックス処理ユニットによって実行されるグラフィックスパイプライン処理及び/または中央処理ユニット、すなわち他の処理ユニットによって実行される処理を促進することができる。したがって、例えば、そうでなければ処理リソースを待つかもしれない動作は、利用可能な2次プロセッサに向けることができる。これは、より速いスループットになる。2次プロセッサが使用されていない処理上で2次プロセッサを使用して、例えばフレーム/秒において測定されるスループットにおいて増加があるということが測定されていることは有利なことである。更に、本開示の実施形態は、2次処理からフィードバックされた情報を使用して、負荷のバランス処理を実行することができる。フィードバックを使用して、例えば、いつ2次プロセッサがあるしきい値処理レベルに達しているかを決定することができる。2次プロセッサがしきい値処理能力に達することを決定されている場合、処理は、中央処理ユニットのような、別の処理ユニットに向けるができる。]
[0011] 更に、本開示の実施形態は、その1次処理目的以外のために処理ユニットを使用し、このような処理ユニットが利用可能である場合に1つ以上の他の2次機能を実行する能力を提供する。そうでなければアイドルであるかもしれないこのようなハードウェア、例えば処理ユニットの使用は、そのハードウェアのより効率的な使用となる。]
[0012] 本開示の1つの観点に従うと、方法は、ドロー要求に応じて、処理ユニットがグラフィックパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが1次処理機能を有することと、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記1次処理機能以外の2次処理機能を実行するために、前記2次プロセッサの割り付けを要求することと、前記割り付け要求が成功した場合に、グラフィックスパイプラインデータを前記処理ユニットに利用可能にすることと、前記処理ユニットによる処理のステータスを監視することと、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合することとを具備する。]
[0013] 本開示の別の観点に従うと、プログラムコードを記憶するコンピュータ読み取り可能なメモリ媒体が提供され、前記プログラムコードは、処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが1次処理機能を有し、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記1次処理機能以外の2次処理機能を実行するために、前記2次プロセッサの割り付けを要求し、前記割り付け要求が成功した場合に、グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、前記処理ユニットによる処理のステータスを監視し、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するためのコードを備える。]
[0014] 本開示の別の観点に従うと、装置は、グラフィックスパイプラインを実行するように構成されている処理ユニットと、前記グラフィックス処理ユニットに結合されている2次処理マネージャとを具備し、前記2次処理マネージャは、前記2次処理マネージャに結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定するように構成され、前記処理ユニットが1次処理機能を有し、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記1次処理機能以外の2次処理機能を実行するために、前記2次プロセッサの割り付けを要求するように構成され、前記割り付け要求が成功した場合に、前記2次処理マネージャは、グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、前記処理ユニットによる処理のステータスを監視し、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するように更に構成されている。]
[0015] 本開示の更に別の観点に従うと、装置は、グラフィックスパイプラインを実行するように構成されているグラフィックス処理ユニットと、前記グラフィックス処理ユニットに結合されている2次処理管理手段とを具備し、前記2次処理管理手段は、前記2次処理マネージャに結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが1次処理機能を有する手段と、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記1次処理機能以外の2次処理機能を実行するために、前記2次プロセッサの割り付けを要求する手段とを備え、前記割り付け要求が成功した場合に、前記2次処理管理手段は、グラフィックスパイプラインデータを前記処理ユニットに利用可能にするための手段と、前記処理ユニットによる処理のステータスを監視する手段と、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するための手段とを更に備える。]
[0016] この簡潔な概要は、発明の性質が速く理解されるように提供されている。発明のより完全な理解は、付属の図に関するその好ましい実施形態の以下の詳細な記述への言及によって得ることができる。]
図面の簡単な説明

[0017] 本開示の上述されている特徴及び目的は、添付の図と併用される以下の記述に関してより明白になるであろう。そこで、同様な参照数字は、同様な要素を示す。
図1は、本開示の1つ以上の実施形態に従って使用するための例示的なデバイスを示すブロック図である。
図2は、本開示の1つ以上の実施形態に従って使用されるコンポーネント及びコンポーネント間通信を含むブロック図を示す。
図3Aは、本開示の1つ以上の実施形態に従って2次処理管理モジュールを実現するプログラムコードプロセスフローを示す。
図3Bは、本開示の1つ以上の実施形態に従って2次処理管理モジュールを実現するプログラムコードプロセスフローを示す。
図4は、本開示の1つ以上の実施形態に従って2次処理インタフェースモジュールを実現するプログラムコードプロセスフローを示す。
図5は、本開示の1つ以上の実施形態に従って使用するための同期プログラムコードプロセスフローを示す。
図6Aは、本開示の1つ以上の実施形態に従った同期例を提供する。
図6Bは、本開示の1つ以上の実施形態に従った同期例を提供する。
図7は、本開示の1つ以上の実施形態に従って2次処理モジュールに転送される構成メッセージに含まれる情報の例を提供する。
図8は、本開示の1つ以上の実施形態に従ってフィードバック216A中に記憶させることができる情報の例を提供する。
図9は、本開示の1つ以上の実施形態に従ってコマンドストリーム及びコマンドストリームに含まれる1つ以上のコマンドの例示的な内容を示す。] 図1 図2 図3A 図3B 図4 図5 図6A 図6B 図7 図8
詳細な説明

[0018] 本開示のある実施形態を、前述の図に関してこれから議論する。ここで、同様の参照数字は、同様のコンポーネントを参照している。]
[0019] 1つ以上の実施形態に従って、システム、方法及び装置が開示されている。2次プロセッサユニットは、グラフィックスパイプラインデータ上で動作するように構成されている。グラフィックスパイプラインにおいて実行する1つ以上のモジュールに出力が利用可能になるように、2次プロセッサからの出力は、グラフィックスパイプラインに統合されている。このような実施形態に従うと、2次プロセッサを使用するかどうかについて決定が行われる。そして、2次プロセッサが使用されるべきである場合、コマンドストリームが、2次プロセッサに提供される。例えば、コマンドストリームは、1つ以上のコマンドを含むことができる。2次プロセッサに提供される各々のコマンドは、現在のコマンドを識別する情報を含む。別のコマンドがある場合、現在のコマンドは、次のコマンドを識別する情報を含む。現在のコマンドが最後のコマンドである場合、現在のコマンドは、最後のコマンドとして現在のコマンドを識別するための情報を含む。コマンドストリームは、2次プロセッサに情報を提供する。そして、この情報は、これらに制限されないが、入力及び/または出力データ記憶位置、及びフィードバック記憶位置を含むことができる。]
[0020] 1つ以上の実施形態に従うと、2次プロセッサは、デジタル信号プロセッサ(DSP)である。DSPは、1次処理を実行するように、例えばオーディオ及び/またはビデオデータを処理するように構成可能であり、2次処理を実行するように構成することができる。1つ以上のこのような実施形態では、DSPは、オーディオ及び/またはビデオデータ処理を実行するために利用可能であるように共有され、利用可能である場合、例えばオーディオ/ビデオデータを処理していない場合に、グラフィックスパイプライン処理を支援することができる。単純化するためだけに、ここで開示されている実施形態は、DSPとして第2のプロセッサを参照して記述されている。本開示の実施形態とともに、任意のプロセッサ、すなわち処理ユニットを使用できることは明白である。]
[0021] 図1は、本開示の1つ以上の実施形態に従って使用するための例示的なコンピューティングデバイス100を示すブロック図である。例示的なコンピューティングデバイス100は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、ビデオゲームプラットフォームまたはコンソール、セル式のまたは衛星の無線電話、地上通信線電話、インターネット電話、携帯用のビデオゲームデバイスまたは携帯情報端末のようなハンドヘルドデバイス、パーソナルミュージックプレイヤー、サーバ、中間のネットワークデバイス、メインフレームコンピュータ、すなわちグラフィカル情報を出力する別のタイプのデバイスを含むことができる。] 図1
[0022] 図1の例において、コンピューティングデバイス100は、中央処理ユニット(CPU)102、GPU104、2次プロセッサの例として、DSP108、ディスプレイユニット124、及びメモリモジュール116、例えばランダムアクセスメモリ(RAM)メモリモジュールを含む。コンピューティングデバイス100のコンポーネント、例えばCPU102、GPU104、DSP108及びメモリモジュール116は、バス106を用いて通信することができる。バスは、今知られているまたは後で発見される任意のタイプのバスまたはデバイス相互接続を含むことができる。CPU102は、汎用または専用マイクロプロセッサを含むことができる。例えば、CPU102は、親会社がUKのケンブリッジのARMホールディングスPLCであり、CAのIrvineを含む、世界中の様々な位置にオフィスを有する、ARM社によって設計されている縮小命令セットコンピュータ(RISC)プロセッサを含むことができる。更に制限しない例として、CPU102は、カリフォルニアのサンタクララのインテル(登録商標)社によって提供されているコア2プロセッサまたは別のタイプのマイクロプロセッサを含むことができる。GPU104は、専用のグラフィックコンピューティングデバイスである。GPU104は、例えば、CAのサニーヴェールのAMDによって提供されているImageonメディアコプロセッサ(Imageon media co-processor)または別のタイプのグラフィック処理ユニットである。GPU104は、例えば、コンピューティングデバイス100のマザーボードに実装することができ、コンピューティングデバイス100のマザーボードのポートにインストールされるグラフィックスカード上に存在させることができ、またはそうでなければコンピューティングデバイス100と同時に使用するように構成することができる。] 図1
[0023] コンピューティングデバイス100に結合されているディスプレイユニット124は、例えば、モニタ、テレビ、投影デバイス、液晶ディスプレイ、プラズマディスプレイパネル、発光ダイオード(LED)アレイ、陰極線管ディスプレイ、電子ペーパー、表面伝導型電子放出素子ディスプレイ(SED)、レーザーテレビディスプレイ、ナノクリスタルディスプレイ(nanocrystal display)、または別のタイプのディスプレイユニットを含むことができる。図1の例において、ディスプレイユニット124は、コンピューティングデバイス100の一部とすることができる。例えば、ディスプレイユニット124は、携帯電話のスクリーンとすることができる。代替的に、例えば、コンピュータデバイス100に対して外側にすることができ、ディスプレイユニット124は、例えば、有線または無線通信接続あるいは他の接続を介してコンピューティングデバイス100と通信することができる。制限しない例として、ディスプレイユニット124は、有線または無線接続を経てパーソナルコンピュータに接続されるコンピュータモニタまたはフラットパネルディスプレイとすることができる。] 図1
[0024] ソフトウェアアプリケーション110は、制限しない例として、ビデオゲーム、グラフィカルユーザインタフェースエンジン、あるいは、技術または芸術のアプリケーションのためのコンピュータ支援設計プログラムのような、CPU102によって実行することができる任意のソフトウェアアプリケーション、あるいは、2次元または3次元グラフィックスを使用する別のタイプのソフトウェアアプリケーションを含むことができる。CPU102がソフトウェアアプリケーション110を実行しているとき、ソフトウェアアプリケーション110は、制限しない例として、OpenVGAPI、OpenGL API、Direct3D API、グラフィックスデバイスインタフェース(GDI)、Quartz、QuickDraw、または別のタイプの2Dまたは3Dのグラフィックス処理APIのうちの任意の1つ以上のもののような、グラフィックス処理アプリケーションプログラミングインタフェース(API)112のサブルーチンを呼び出すことができる。]
[0025] 少なくとも1つの実施形態に従うと、ソフトウェアアプリケーション110がグラフィックス処理API112のサブルーチンを呼び出すとき、グラフィックス処理API112は、GPUドライバ114の1つ以上のサブルーチンを呼び出す。GPUドライバ114は、コンピューティングデバイス100上のCPU102によって実行する。GPUドライバ114は、例えば、グラフィックス処理API112及びGPU104の間にインタフェースを提供する1組のソフトウェア及び/またはファームウェア命令を含むことができる。グラフィックス処理API112がGPUドライバ114のサブルーチンを呼び出すとき、GPUドライバ114は、表示可能なグラフィックス情報をGPU104に発生させるコマンドを生成し、発行する。例えば、グラフィックス処理API112がグラフィックス基本要素のバッチを描く、すなわちレンダリングするためにGPUドライバ114のサブルーチンを呼び出すとき、GPUドライバ114は、GPU104に処理コンフィギュレーションを供給する。GPU104は、グラフィックス基本要素のバッチをレンダリングするために処理コンフィギュレーションを使用する。GPU104は、例えば、グラフィックス基本要素のバッチをレンダリングして、グラフィックス基本要素のラスター画像を出力する。]
[0026] GPUドライバ114によって生成されたコマンドは、GPU104がコマンドを実行するために使用すべきであるグラフィックス処理コンフィグレーションを識別することができる。コンフィグレーションは、GPU104によって実行される1組の命令、1組の状態レジスタ値、及びコマンドを実行するためにGPU104が必要とするかもしれない別のタイプの情報を識別することができる。]
[0027] GPUドライバ114がメモリ116中にグラフィックス処理コンフィグレーションを記憶させる場合、GPUドライバ114は、GPUドライバ114によって生成されたコマンド中のグラフィックス処理コンフィグレーションに対応する、メモリモジュール116中の記憶位置を参照することができる。GPU104がコマンドを受け取るとき、GPU104は、GPUドライバ114から受け取ったコマンドにおいて参照されているグラフィックス処理コンフィグレーションをメモリ116から取得することができる。]
[0028] 少なくとも1つの実施形態に従うと、GPU104のコマンドデコーダ(示されない)は、GPU114からのコマンドを復号し、データを使用して、例えば、メモリ116から取得されたデータ、位置、色、テクスチャ等のデータを使用してコマンドを実行するようにGPU104の処理要素のうちの1つ以上のものを構成する。]
[0029] 1つ以上の実施形態に従うと、GPU104の処理要素、すなわちモジュールは、グラフィックスパイプラインを実現する。このような実施形態に従うと、GPU104の処理要素は、パラレルモードでグラフィックスパイプラインを実現することができるので、その処理要素は、並列してデータ上で動作し、1つの処理要素からの出力は、別の処理要素に対する入力として使用される。制限しない例として、第1の処理要素は、第1の組の初期入力データ上で第1のグラフィックス動作を実行し、第2の処理要素に第1の組の中間結果を出力する。初期入力データは、1つ以上の頂点に対応するデータを含むことができる。そのデータは、例えば、座標及び属性データを含むことができる。頂点座標は、例えばX,Y及びZ(幅、高さ、深さ)座標を有する4次元座標系に基づいて画像内で位置を識別し、W座標は、斉次座標を形成する。頂点属性は、例えば、頂点と関連づけられた色、法線、及びテクスチャ座標を含むことができる。第2の処理要素は、第1の処理要素によって出力された第1の組の中間結果上で別のグラフィックス動作を実行することができ、第3の処理要素に第2の組の中間結果を出力するなどすることができる。第2の処理要素が第2のグラフィックス動作を実行している間、第1の処理要素は、第2の組の初期入力データ上で第1のグラフィックス動作を実行することができる。]
[0030] 最後の処理要素がメモリモジュール116の1つ以上のバッファにピクセルオブジェクトを出力する、すなわちある他の宛先にこの新しいピクセルオブジェクトを出力するまで、GPU104、及びその処理要素は、この方法を継続することができる。ピクセルオブジェクトは、ピクセルを記述するデータである。各々のピクセルオブジェクトは、複数の色値を指定することができ、ピクセルの透明度レベルを指定することができる。いくつかの状況において、ピクセルオブジェクトは、第1の色フォーマット中で第1の色を、第2の色フォーマット中で第2の色を指定することができる。]
[0031] 開示の1つ以上の実施形態に従うと、GPU104の処理モジュールは、GPU104、GPU104の処理モジュールのうちの1つ以上のものを実行するように構成されている専用のハードウェアモジュール及び/またはプログラム可能な処理モジュールによって実行されるソフトウェアを含むことができる。GPU104の処理モジュールは、グラフィックスパイプラインを実現する。グラフィックスパイプラインは、例えば、頂点シェーダ、基本要素アセンブリ、ビューポート変換、基本要素セットアップ、ラスター化、隠れた基本要素及びピクセル消去、属性セットアップ、属性補間及びフラグメントシェーダステージを含むことができる。]
[0032] 本発明の実施形態は、DSP108、すなわち他の2次プロセッサに2次使用を割り当て、グラフィックスパイプラインにおいて使用されるデータ上で動作させることができる。1つ以上の実施形態に従うと、2次使用は、2次プロセッサの1次使用とは異なる。例えば、DSP108は、オーディオ及びビデオデータを処理するために使用することができ、グラフィックスパイプラインデータ上で動作する1つ以上の照射処理モジュールを実現するために更に使用することができる。そうすることにおいて、2次プロセッサは、グラフィックスパイプラインを実現するために使用されるリソースを補足することができる。]
[0033] 本開示の実施形態に従うと、2次プロセッサは、2次プロセッサがその主目的のために使用されていないということが決定されたときに使用される。例えば、DSP108がアイドルである、すなわち、オーディオまたはビデオデータを処理していないことが決定された場合、グラフィックスパイプラインに関して2次プロセッサとして使用するためにDSP108を割り付ける要求がなされる。このような場合、DSP108は、グラフィックスパイプラインデータ上に例えば照射処理のような、何らかの形態の2次処理、または他の処理、例えばスキン処理を実行するために使用することができる。]
[0034] 図2は、本開示の1つ以上の実施形態に従って使用されるコンポーネント及びコンポーネント間通信を含むブロック図を示す。2次処理管理モジュール(SPMM)、すなわち2次処理マネージャ202は、1つ以上の2次処理インタフェースモジュール(SPIM)との組み合わせにおいて2次処理を管理する。1つ以上の実施形態に従うと、SPMM及びSPIMモジュールは、個別のモジュールである。代替的に、SPMM及びSPIMモジュールのうちの1つ以上のものが、単一のモジュールを形成するために組み合わされる。更に別の代替として、SPMM及びSPIMモジュールのうちの1つ以上のものを、他のプログラムコードと統合することができる。制限しない例として、SPIMは、2次処理を実行するプログラムコードと統合することができる、及び/または、SPIMは、グラフィックスパイプラインのモジュールを実行するプログラムコードと統合することができる。SPMM202は、2次プロセッサを使用することが可能であるかどうかを決定し、コマンドストリームを2次プロセッサに提供する。コマンドストリームは、1つ以上のコマンドを含む。SPMM202は、2次処理によるデータアクセス及び1つ以上のグラフィックスパイプライン処理モジュールを同期させ、2次プロセッサによって操作されたグラフィックスパイプラインデータはグラフィックスパイプラインによって処理されたデータに統合される。] 図2
[0035] 図2に示される例において、DSP108は、2次プロセッサとして使用されている。本開示の1つ以上の実施形態に従うとどんな処理ユニットでも2次プロセッサとして使用できることは明白である。SPMM202は、アプリケーション110がドローコールを発行するときに通知220を受け取る。SPMM202は、アプリケーション110によって提供されるドローコール及び関連づけられた情報を分析し、ドローコールの処理が2次プロセッサによって実行できる処理を含むかどうかを決定する。例えば、SPMM202は、ドローコールの処理が1つ以上の照射処理モデルの色データへの適用を必要とするかどうかを決定する。別の制限しない例として、SPMM202は、ドローコールを調査して、スキン処理が適用されるべきかどうかを決定することができる。] 図2
[0036] 処理が2次プロセッサによって実行できるということをSPMM202が決定する場合、SPMM202は、2次処理のための2次プロセッサを割り付けることを試みる。例えば、SPMM202は、DSP108を要求するために、DSP108のリアルタイムオペレーティングシステム(RTOS)206と通信222する。通信222は、DSP108が利用可能であるかどうか、例えばSPMM202の割り付け要求が成功したかどうかをSPMM202に通知するために、RTOS206によって使用されるコールバックを含む。DSP108が利用可能であるということ、例えばDSP108が主目的のために使用されていないということをRTOS206が決定する場合、RTOS206は、DSPモジュール208をロードする。DSPモジュール208は、2次処理モジュール208B及び2次処理インタフェースモジュール(SPIM)208Aを含む。]
[0037] 2次処理モジュール208Bは、2次処理を実行するために使用されるプログラムコードを備える。SPIM208Aは、通信路228を経てメモリモジュール116中のフィードバックメモリ領域216Aにフィードバックを提供するように、SPMM202とインタフェースするように構成されているプログラムコードを備える。SPMM202は、通信路226を経て、SPIM208Aに情報を提供する。この情報は、フィードバック領域216A、入力データ及び出力データの記憶位置、例えばデータバッファ216C中の位置を識別する。更に、SPIM208Aは、情報を処理モジュール208Bに提供する。その情報は、2次処理、例えば照射処理を実行するために処理モジュール208Bによって使用することができる。]
[0038] 1つ以上の実施形態に従うと、SPMM202は通信路226を使用して、処理モジュール208Bによって使用され、コマンドのストリームまたはコマンドストリームとして言及される、1組のコマンドと関連づけられた情報を提供する。1つ以上のこのような実施形態に従うと、SPMM202は、初期メッセージをSPIM208Aに通信する。初期メッセージは、メモリモジュール116のコマンドストリーム領域216B中に記憶されているコマンドストリームの最初のコマンドへのポインタ、及びメモリモジュール116中のフィードバック領域216Aへのポインタを含む。簡潔に説明すると、コマンドストリーム中のコマンドは、データバッファ216Cの中の入力及び出力データの位置、フィードバック216Aの位置、ストリーム中の次のコマンドへのポインタまたは現在のコマンドが最後のコマンドであるという表示を識別するための情報、及び、DSPモジュール208が照射処理を実行する場合に使用される照射処理モデルのような、他の情報を含む。コマンドの内容は、以下で、より詳細に記述する。]
[0039] SPMM202は、通信路224を経て各々のコマンドをコマンドストリーム216Bにロードし、通信路226を経てコマンドストリーム216B中の最初のコマンドへのポインタをSPIM208Aに転送し、SPMM202によって送られた初期メッセージをSPIM208Aに転送する。その後、SPIM208Aは、最初の、すなわち現在のコマンド中に含まれる情報を使用して、コマンドストリーム216B中の次のコマンドを位置付け、すなわち最初の/現在のコマンドを最後のコマンドとして識別する。SPIM208Aは、コマンドストリーム中の所定のコマンドに含まれる情報と通信路226を経てSPMM202によって提供された初期情報とに基づいて、フィードバック216A、コマンドストリーム216B及び/またはデータバッファ216Cにアクセスすることができる。SPIM208A及び処理モジュール208Bを含むDSPモジュール208は、例えば、通信路228を経てメモリ116の1つ以上の領域にアクセスすることができる。]
[0040] データバッファ216Cに含まれるデータは、処理モジュール208B及びグラフィックスパイプライン処理モジュール218の両方によって使用される。モジュール208Bとモジュール218のうちの少なくとも1つとの間に少なくとも1つのデータ依存がある場合、SPMM202は、フィードバック216A中に記憶されているSPIM208Aによって提供された情報及びSPIM214によって提供された情報に基づいて、モジュール208B及び218によるデータアクセスを同期させる。SPIM214は、グラフィックスパイプライン処理モジュール218とともに動作する。例えば、SPMM202は、フィードバック216A中の情報を使用して、lit色データが1つ以上のグラフィックスパイプライン処理モジュール218による処理のために利用可能であるということをSPIM214に通知することができる。更に制限しない例として、クリッピングモジュールによって必要とされる基本要素の全てに対応する色データが処理モジュール208Bによって処理されているということをSPMM202がいったん決定すると、lit色データは、グラフィックスパイプライン処理モジュール218のクリッピングモジュールに利用可能になる。SPMM202及びSPIM214は、通信経路232を経て通信することができる、例えばSPIM214は、グラフィックスパイプライン処理モジュール218のうち1つ以上のものがデータを処理するための準備ができているということをSPMM202に通知する、及び/または、SPMM202は、グラフィックスパイプライン処理モジュール218によって処理されるデータが利用可能であるということをSPIM214に通知する。]
[0041] 更に、SPMM202は、フィードバック領域216A中の情報を使用して、いつコマンドストリーム216B中の領域がコマンドストリーム中の新しいコマンドで上書きすることができるかを決定することができる。制限しない例として、フィードバック216Aは、2次処理モジュール208Bによって完了された最新のコマンドを識別する情報を含む。2次処理モジュール208Bがコマンドストリーム216中のコマンドにもはやアクセスしておらず、そしてコマンドがもはや必要とされないということをSPMM202が決定した場合、SPMM202は、コマンドストリーム中の新しいコマンドのために領域を使用することを決定することができる。コマンドに対応するグラフィックスパイプラインデータをグラフィックスパイプラインが処理し終えている場合に、SPMM202は、コマンドがもはや必要とされないということを決定するかもしれない。]
[0042] 1つ以上の実施形態に従うと、SPMM202、SPIM208A及びSPIM214は、1つ以上の処理ユニット、すなわちプロセッサによって実行されるプログラムコードを備える。このような処理ユニットは、制限なしで、CPU103、DSP108及びGPU104を含むことができる。制限しない例として、SPMM202及びSPIM214は、CPU103によって実行されるプログラムコードを備え、SPIM208Aは、DSP108によって実行されるプログラムコードを備える。更に制限しない例として、SPMM202のプログラムコードはCPU103によって実行され、SPIM214はGPU104によって実行されるプログラムコードを備え、SPIM208AはDSP108によって実行されるプログラムコードを備える。しかしながら、SPMM202、SPIM208及びSPIM214のプログラムコードを実現するためにどんな1つ以上の処理ユニットでも使用することができることは明らかである。更に制限しない例として、通信路220,222,224,226,228,230及び232、及び/または、SPMM202と、RTOS206と、SPIM208A及び処理モジュール208Bを含むDSPモジュール208と、メモリモジュール116、SPIM214及びグラフィックスパイプライン処理モジュール218との間の通信を促進するためにバス106を使用することができる。通信路230は、例えば、データバッファ216C中に記憶されているグラフィックスパイプラインデータにアクセスするために、グラフィックパイプライン処理モジュール218のうちの1つ以上のものによって使用することができる。]
[0043] 図3A及び3Bを含む図3は、本開示の1つ以上の実施形態に従ってSPMM202を実現するプログラムコードプロセスフローを示す。ステップ302で、SPMM202は、ドローコール、例えばアプリケーション110によってグラフィックスAPI112に対してなされたコールを受け取る。SPMM202は、ステップ304で、ドローコールを調査し、2次処理を使用するための機会を識別する。例えば、SPMM202は、ドローコールを調査し、1つ以上の照射処理モデルを色データに適用することをアプリケーション110が要求しているかどうかを識別することができる。ドローコールの調査から、2次処理の機会が存在しないということをステップ306でSPMM202が決定する場合、処理はステップ312で継続して、2次処理がないということをグラフィックスパイプライン、例えばSPIM214に通知する。このような通知は、例えば、データバッファ216C中に記憶されているデータに対するグラフィックスパイプライン処理モジュール218によるアクセスをSPIM214が調整する必要をなくす。] 図3A
[0044] 2次処理を使用するための機会があるということをステップ306でSPMM202が決定する場合、処理はステップ308に継続し、ここで、SPMM202が2次プロセッサを要求する。例えば、DPMM202は、DSPモジュール208をロードするための要求をDSP108のRTOS206に送り、SPMM202の要求が成功したかまたは失敗したかどうかをSPMM202に通知するためのコールバックをRTOS206に提供する。要求が失敗したということをRTOS206がSPMM202に通知するということがステップ310で決定された場合、処理は継続して、ステップ312で、2次処理がないということをグラフィックスパイプラインに通知する。このような場合、1つ以上の実施形態に従うと、SPMM202は、照射処理を実行することをCPU102に通知することができる。]
[0045] 2次プロセッサに対する要求が成功したということをRTOS206がSPMM202に通知する場合、処理は、図3Bのステップ322に継続する。ステップ322で、SPMM202は、コマンドストリーム中の最初のコマンドを準備し、コマンドストリーム216B中に最初のコマンドを記憶させる。1つ以上の実施形態に従うと、SPMM202は、リンクされたリストのアプローチを使用して、2次プロセッサにコマンドストリームを通信する。制限しない例として、各々のコマンドは、次のコマンドへのポインタを含む。更に制限しない例として、コマンドは、コマンドストリーム中の前のコマンドへのポインタのような、コマンドストリーム中の任意のコマンドへのポインタを含むことができる。現在のコマンドが最後のコマンドである場合、次のコマンドへのポインタは、値、例えば0xFFFFFFFFの16進値を含む。それは、最後のコマンドとして現在のコマンドを識別する。] 図3B
[0046] 1つ以上の実施形態では、SPMM202は、コマンドストリーム216Bにコマンドを記憶させるときには、付加的なコマンドがあるかどうかを知らないかもしれない。このような場合、SPMM202は、付加的なコマンドがあるかもしれないということをSPIM208Aに通知するために、リンクされたリストに次のコマンドへのポインタとして0の値を記憶させる。モジュール208Bが現在のコマンドと関連づけられた処理を完了する場合、SPIM208Aは、ちょうど完了されたコマンドの中のポインタを見て、コマンドストリーム216Bにもしあるなら次のコマンドを位置付ける。ポインタが0の値に設定されている場合、SPIM208Aは、SPMM202がポインタをまだ更新していないということを知る。このような場合、SPIM202は、SPMM202がポインタを更新しているかどうかを見るためにポインタをチェックする前に一定期間待つことができる。ポインタが0でない値を有する場合、SPIM208Aは、その値を調査し、それがコマンドストリーム216B中の次のコマンドを指す、すなわち完了されているコマンドがコマンドストリーム中の最後のコマンドであることを示しているかを決定する。後の場合では、SPMM202は、現在のコマンドストリームには処理すべきコマンドがこれ以上ないということをSPIM208Aに通知するために、ポインタに値、例えば0xFFFFFFFFの16進値を記憶させることができ、DSP108は、その1次、すなわち他の処理を実行するために使用することができる。]
[0047] ステップ324で、SPMM202は、最初のコマンドに対応する情報を含む初期メッセージを2次プロセッサに送る。SPMM202によってSPIM208Aに送られるメッセージは、最初のコマンドに対応する情報を有する。SPMM202によって送られるメッセージは、それが処理を開始させることができるということを2次プロセッサに通知し、最初のコマンドを位置付けるための情報を提供する。本開示の1つ以上の実施形態に従うと、図7に関して、初期メッセージ700は、コマンドストリームメモリ216B中のコマンドへのポインタ702、コマンドストリームメモリ216B中のコマンドの記憶領域サイズを識別する情報704、及びメモリモジュール216のフィードバック216A記憶領域へのポインタ706を含む。図3Bについて再び参照すると、SPMM202がステップ324で、コマンドストリーム中の最初のコマンドを2次プロセッサに通知するメッセージを送った後、SPMM202の処理は、ステップ326に継続して、コマンドストリーム中に付加的なコマンドがあるかどうかを決定する。] 図3B 図7
[0048] ステップ326で、現在のドローコールのために生成すべきである少なくとも1つの付加的なコマンドがあるということをSPMM202が決定する場合、処理は、ステップ328で継続する。ステップ328で、SPMM202は、新しいコマンドを準備し、コマンドストリーム216B中に新しいコマンドを記憶させる。ステップ330で、SPMM202は、コマンドストリーム216Bにおける新しいコマンドを指すために、例えば新しいコマンドが記憶されるべきコマンドストリーム216B中の位置を指すために、コマンドストリーム216B中の直前のコマンド、例えば最初のコマンドにポインタを設定する。最初のコマンドと同様に、新しいコマンド及び任意の後続のコマンドは、(次のコマンドがSPMM202によって生成される場合に)次のコマンドを指すポインタ、または、(次のコマンドがない場合に)新しいコマンドが最後のコマンドであるというインジケータを含む。1つ以上の実施形態に従うと、初期メッセージが2次プロセッサに送られた後、SPMM202及び2次プロセッサの処理モジュール、例えばDSPモジュール208は、コマンドストリーム216B及びフィードバック216Aを経て通信する。そうすることにおいて、2つの処理モジュールの間でメッセージを送る必要がないので、オーバヘッドは、最小化することができる。DSPモジュール208は、データを処理するために、コマンドストリーム216B中のコマンドのリンクされたリストをナビゲートし、メモリモジュール216のフィードバック216Aにステータス情報を書き込むことによってSPMMにフィードバックを提供する。1つ以上の実施形態に従うと、DSPモジュール208は、SPMM202及びグラフィックスパイプライン処理モジュール218とは非同期に独立して動作する。]
[0049] いったんSPMM202が新しいコマンドを指すために先行するコマンド中のポインタを更新すると、処理は、ステップ326で継続して、生成すべき何らかの付加的なコマンドが残っているかどうかを決定する。そうでない場合、処理は、ステップ332で継続して、最後のコマンドに含まれるポインタを値、例えば0xFFFFFFFFの16進値に更新し、コマンドが現在のコマンドストリーム216Bにおける最後のコマンドであるということをSPIM208Aに通知し、現在のドローコールに対する処理は終わる。付加的なドローコールがある場合、処理は、ステップ322で継続して、別のドローコールに関するコマンドストリームを準備する。]
[0050] SPIM208Aは、SPMM202及び処理モジュール208B間のインタフェースを提供する。1つ以上の実施形態に従うと、SPIM208Aは、SPIM202によって生成されたコマンドストリームに対応する情報を受け取り、処理モジュール208Bによって実行される処理を促進し、処理モジュール208Bの処理ステータスを監視し、処理モジュール208Bの処理上でフィードバックを提供する。図4は、本開示の1つ以上の実施形態に従ってSPIM208Aを実現するプログラムコードプロセスフローを示す。] 図4
[0051] ステップ402で、SPIM208Aは、初期設定メッセージをSPIM202から受け取る。制限しない例として、SPIM208Aは、初期設定メッセージ700を受け取る。初期設定メッセージ700は、最初のコマンドに対応するコマンドストリーム216B中の位置へのポインタ、例えばバイトでの最初のコマンドのサイズを識別するための情報704、及びフィードバック216A領域中の位置へのポインタ706を含む。ステップ404で、SPIM208Aはメッセージ700中の情報を使用して、最初のコマンドをコマンドストリーム216Bに位置付けて、現在のコマンドが最後のコマンドであるかどうかを識別する。]
[0052] ステップ406で、SPIM208Aは、現在のコマンドに含まれる情報を処理モジュール208Bに利用可能にする。例えば、位置情報例えばポインタ、及びサイズ情報を使用して、データバッファ216C中のデータにアクセスするための、例えばデータをロード及び/または記憶させるためのデータ移動動作を始める。更に、コマンドは、最初の頂点と関連づけられた色データを入力するためのポインタ、及び次の頂点のために色データを位置付けるためにポインタに加算するためのインクリメントのような、データバッファ216C中の色データの位置を含むことができる。現在のコマンドは、最初の頂点と関連づけられたデータバッファ216Cにおける出力バッファ中の位置へのポインタとともに、次の頂点と関連づけられた色データに対する出力位置を位置付けるためのインクリメントを更に含むことができる。更に制限しない例として、処理モジュール208Bが照射処理を実行する場合、現在のコマンドは、1つ以上の照射処理モデルを含むことができる。別の制限しない例として、処理モジュール208Bがスキン処理を実行する場合、コマンドは、スキン処理マトリックスを含むことができる。1つ以上の実施形態に従うと、最初のコマンドは、完全な組の照射処理モデル、すなわちスキン処理マトリックスを供給することができ、後続するコマンドは、前のコマンドにおいて指定されている照射処理モデル中の、すなわちスキン処理マトリックス中の何らかの変化を識別する。]
[0053] ステップS408で、SPIM208Aは、処理モジュール208Bの進行を監視し、ステップ410で処理モジュール208Bによって実行される処理のステータスを識別する情報で、フィードバック216A中の情報を更新する。図8は、本開示の1つ以上の実施形態に従ってフィードバック216A中に記憶させることができる情報の例を提供する。1つ以上のこのような実施形態に従うと、各々のコマンドは頂点の有限集合を識別し、いったん処理モジュール208Bが、コマンドによって識別される頂点と関連づけられた頂点データを処理すると、コマンドは完了したと考えられる。フィードバック216Aは、処理モジュール208Bによって完了された最新のコマンドを識別するための情報、例えば最後のコマンド識別子(ID)802及びコマンドストリーム216B中のコマンドへのポインタ804を含むことができる。] 図8
[0054] 図4を再び参照すると、SPIM208Aは、ステップ404に進行し、現在のコマンド中の情報を使用して、処理において使用されるデータを処理モジュール208Bに利用可能にし、そして2次処理のステータスで、フィードバック216Aを更新する。] 図4
[0055] 1つ以上の実施形態に従って上で議論したように、2次プロセッサは、SPMM202及びグラフィックスパイプライン処理モジュール218とは非同期に独立して動作する。しかしながら、少なくとも1つの場合において、2次処理、例えばDSPモジュール208によって実行される処理は、グラフィックスパイプライン処理モジュール218によって実行される処理と同期されるので、2次プロセッサによって処理され、グラフィックスパイプライン処理モジュール218によって更に処理されるべきであるデータは同期される。このような場合、SPMM202は、SPIM214に関連して動作する。SPIM214は、グラフィックスパイプライン処理モジュール218及びSPMM202の間でインタフェースを提供して、2次プロセッサによって処理されているデータをモジュール218は使用するように、グラフィックスパイプライン処理モジュール218によるデータアクセスを管理することができる。1つ以上の実施形態に従うと、SPMM202及びSPIM214は、単一のモジュールを構成することができる。]
[0056] 図5は、本開示の1つ以上の実施形態に従って使用するためのプログラムコードプロセスフローを示す。1つ以上の実施形態に従うと、グラフィックスパイプライン及びGPU104は、基本要素のブロック上で動作し、その各々は、1組の頂点を有する。例えば、基本要素が三角形を構成する場合、各々の基本要素は、3つの頂点の関連づけられた組を有する。基本要素のブロックは、基本要素及びそれらの頂点のリストとして表現することができる。1つ以上の実施形態に従うと、SPMM202は、所定の基本要素リスト中の基本要素のために2次処理が実行されるべきであるかどうかを決定し、そして、基本要素リスト中の値、例えば論理値を設定して、基本要素リスト中で識別された基本要素で2次処理が使用されるかどうかを示す。] 図5
[0057] 1つ以上の実施形態に従うと、基本要素リスト中に設定されている値をSPMM202によって使用して、グラフィックスパイプラインによって処理される基本要素と関連づけられたデータが、2次プロセッサによって最初に処理されているかどうかを決定することができる。ステップ502で、SPMM202は、基本要素リスト中に設定されている値にアクセスし、ステップ504でSPMM202は、2次処理が使用されているかどうかを決定する。2次処理が実行されているということをSPMM202がステップ504で決定する場合、データがモジュール218に利用可能になる前に、グラフィックスパイプライン処理モジュール218によって更に処理されるべきデータのその処理を2次プロセッサが完了するように、SPMM202は、2次プロセッサによって処理されているデータへのグラフィックスパイプライン処理モジュール218によるアクセスを同期させる。]
[0058] 制限しない例として、2次処理が使用されていないということを基本要素リスト中に記憶されている値が示している場合、グラフィックスパイプライン処理モジュール218によってアクセスされるデータは、2次処理モジュール208Bによるデータアクセスと同期させる必要がない。このような場合、グラフィックスパイプライン処理モジュール218は、非同期モードにおいて動作することができる。それは、頂点データのグラフィックスパイプライン処理モジュール218の使用と、2次処理モジュール208Bによってこのような頂点データの使用との間のデータアクセスを同期させることを伴わない。2次処理が使用されているということを基本要素リスト中に記憶されている値が示している場合、頂点データへのモジュール218のアクセスを処理モジュール208Bのそれと同期させるために、グラフィックスパイプライン処理モジュール218は、同期モードにおいて動作する。]
[0059] データアクセスが同期されるべきである場合、1つ以上の実施形態に従うと、SPMM202は、ステップ506で、SPIM208Aによって提供されるフィードバック情報を使用して、処理モジュール208Bの状態を決定する。1つ以上の実施形態に従うと、SPIM208Aは、処理モジュール208Bによって完了された最後の基本要素を識別することによって処理モジュール208Bの処理状態を識別する情報をフィードバック216Aに記憶させる。1つ以上の実施形態に従うと、基本要素は、連続する識別子が割り当てられるので、SPMM202は、SPIM208Aによって供給されたフィードバック情報に基づいてステップ508で、その識別子がSPIM208Aによって供給された基本要素識別子以下である基本要素が、処理モジュール208Bによって完了されているということを決定することができる。ステップ510で、SPIM214とともに、SPMM202は、処理モジュール208Bによって処理されていることが決定された基本要素と関連づけられ、データバッファ216Cに記憶されているデータにグラフィックス処理モジュール218がアクセスすることを可能にする。]
[0060] 図6A及び6Bを含む図6は、本開示の1つ以上の実施形態に従った同期例を提供する。図6Aを参照すると、モジュール604及び608は、グラフィックスパイプライン処理モジュール218の例を提供する。グラフィックスパイプライン処理モジュール218は、データバッファ216C中に記憶されているデータにアクセスする。非同期モードにおいて、変換前バッファ602は、頂点データを記憶する。頂点データは、位置データ、例えばX,Y,Z及びW座標データ、テクスチャデータ及び色データを含む。変換前バッファ602中に記憶されている色データは、lit色データ、すなわち2次プロセッサを使用すること以外の方法において照射処理を受けている色データを含む。例えば、2次プロセッサ、例えばDSP108が2次処理のために利用不可能であるということをSPMM202が決定する場合には、このような場合にあたるかもしれない。このような場合、CPU102が照射処理を実行して、変換前バッファ602に値を記憶させることができる。] 図6A
[0061] 非同期モードにおいて、モデルビュー変換モジュール604は、lit色データを含む頂点データを取得し、lit色データ以外の頂点データ上で動作し、変換後バッファ606中に頂点データを記憶させる。非同期モードにおいて、モデルビュー変換モジュール604は、他の頂点データとともに色データを転送するように命じられる。変換モジュール604は色データを修正しないが、それは、命じられたときに、変換前バッファ602からlit色データを取得し、変換後バッファ606にそのlit色データを記憶させるので、その色データは、グラフィックパイプライン中の後続のモジュール、例えばビューポート変換モジュール608による処理のために利用可能である。図6Aに示される例において、ビューポート変換モジュール608は変換後バッファ606にアクセスして、その変換動作において、モデルビュー変換モジュール614によって転送されたlit色データを取得し、lit色データを使用して、例えば色データを補間する。] 図6A
[0062] 図6Bは、2次処理同期モードにおけるバッファ602及び606と変換モジュール604及び608とに関係する処理を示す。図6Bに示される例において、2次プロセッサ610、例えば処理モジュール208Bを実現するDSP108は、位置データと一緒に、変換前バッファ602からunlit頂点色データを取得する。2次プロセッサ610は、他のデータ、例えば照射処理モデルデータ、スキン処理マトリックスデータ等と一緒に、取得した情報を使用して、色データを処理する。照射処理の場合、2次プロセッサ610は、1つ以上の照射処理モデル及び頂点データを使用して、lit頂点色データを生成する。そして、2次プロセッサ610は、コマンドストリーム216B中に含まれる情報を使用して識別される位置で、lit頂点色データを変換後バッファ606中に記憶させる。] 図6B
[0063] 非同期モードにおいて、モデルビュー変換モジュール604は、変換後バッファ606に色データを書き込む。しかしながら、変換モジュール604が変換後バッファ606に色データを書き込んだ場合、変換モジュール604は、2次プロセッサ610によってバッファ606に書き込まれたlit色データに上書きする可能性がある。同期モードにおいて、モデルビュー変換モジュール604は、変換後バッファ606に色データを転送しないように、通知、例えばSPIM214からの通知を受け取る。モデルビュー変換モジュール604によって変換後バッファ606に書き込まれる頂点データの一部分としての色データの転送を先行することによって、変換モジュール604は、2次プロセッサ610によって変換後バッファ606に書き込まれたlit色データを上書きすることを避ける。]
[0064] 同期モードにおいて、SPIM214は、変換後バッファ606に記憶されているデータのステータスを提供するので、ビューポート変換モジュール608は、2次プロセッサ610によって出力されたlit色データを含む頂点データを取得する。制限しない例として、SPMM202及びSPIM214は、フィードバック216Aを管理して、ビューポート変換モジュール608が処理すべきである基本要素と関連づけられた頂点を2次プロセッサ610が処理しているかどうかを識別することができる。その結果、モジュール608は、lit色データを含む頂点データを処理する。例えば、コマンドは、その中の頂点がコマンドによって処理されている基本要素リストとコマンドとを関連づける情報を含むことができる。1つ以上の実施形態に従うと、関連づけられた基本要素リスト中の基本要素の全てを処理するために1つのコマンドが2次プロセッサ610によって使用されているように、コマンド及び関連づけられた基本要素リストの間で1対1の対応がある。したがって、所定のコマンドに対して処理が完了したことがいったん決定されると、関連づけられた基本要素リスト中の基本要素は、ビューポート変換モジュール608によって処理するために利用可能である。]
[0065] 1つ以上の実施形態に従うと、各々のコマンドは識別子が与えられ、コマンド識別子は、連続的な順序で割り当てられる。そうすることにおいて、フィードバック216Aに含まれる最後のコマンド識別子802情報に基づいて、所定のコマンドに対する処理が完了されているかどうかを決定することができる。例えば、最後のコマンドID802において識別される値以下であるコマンド識別子の値を有するコマンドは2次プロセッサ610によって完了されている一方で、最後のコマンドID802の値よりも大きいコマンド識別子の値を有するコマンドは2次プロセッサ610によって終えられていないと考えられる。]
[0066] 図9は、本開示の1つ以上の実施形態に従ってコマンドストリーム及びコマンドストリームに含まれる1つ以上のコマンドの例示的な内容を示す。コマンドストリーム216Bは、1つ以上のコマンド900を含む。各々のコマンド900は、コマンド900の1つ以上の情報項目を含む。下記は、コマンドストリーム中のコマンド900の内容の制限しない例を提供する。それは、照射処理またはスキン処理プログラムコードのような、頂点上で動作するように構成されているプログラムコードとともに使用するための情報を含む。以下に議論される情報と置換するために、他の情報を加えたり、使用できることは明白である。そして、この情報は、本開示の1つ以上の実施形態に従って2次プロセッサによって使用される任意のプログラムコードと同時に使用するように適合させることができる。] 図9
[0067] 情報項目902及び904は、現在のコマンド900とともに使用するための識別情報を含む。1つ以上の実施形態に従うと、次の情報は、2次処理管理及び制御を促進するために使用することができる。下記は、このような情報項目の例を提供する:
timestamp:2次プロセッサによって処理されている現在のコマンドを識別する。SPIM208Aは、例えば、フィードバック213A中にこのタイムスタンプを出力し、2次プロセッサがこのコマンドを現在処理しているということを示すことができる。]
[0068] primitiveTimeStamp:この変数は、現在のコマンド900に対応する基本要素リストを識別する際に使用するためのタイムスタンプを含む。基本要素タイムスタンプの値は、例えば、コマンド900を所定の基本要素にコマンド900をマッピングするために使用することができる。基本要素タイムスタンプは、2次プロセッサによって無視することができる。]
[0069] Granularity:1つ以上の実施形態に従って使用するための任意の変数。この粒度変数は、頂点グループを構成するコマンド900に関連づけられた多数の頂点、すなわちコマンド900と関連づけられた頂点の部分集合を示す。1つ以上の実施形態に従うと、2次プロセッサは、フィードバックとして、情報を出力し、頂点グループを構成する多数の頂点が処理されているということを示す。コマンド900が頂点を処理する場合、粒度は、コマンド900に関連づけられた頂点の部分集合である多数の頂点、例えば頂点グループの完成時にフィードバックを提供するようにSPIM208Aに命ずる。粒度の値を使用すると、SPIM208Aは、各々の頂点グループが処理されるとフィードバックを提供することができる。そして、コマンド900と関連づけられた頂点の全ての処理を2次プロセッサが完了したときに、SPIM208Aによって提供されるフィードバックにこのフィードバックを加えることができ、したがって、付加的な及び/またはより優れたレベルのフィードバックを提供する。]
[0070] vertexCount:現在のコマンド900に関連して処理される多数の頂点を示す値を構成する変数。]
[0071] nextCommandGroupSize:この変数は、次のコマンドのサイズを識別する。次のリンクされたコマンドがない場合、変数は、0に設定することができる。そうでなければ、その値は、次のコマンドに含まれるバイト数を反映する値を含む。]
[0072] nextCommandGroupPtr:この変数は、次のコマンドID情報904の一部または全てを含む。それは、コマンドストリーム216B中の次のコマンドへのポインタを含むことができる。次のコマンドがない場合、その値は、NULL値に設定することができる。そうでなければ、その値は、次のコマンドの、例えばコマンドストリーム216B中の初期記憶位置に対応するメモリ位置へのポインタを含む。]
[0073] 情報項目906は、記憶されているデータ、例えばデータバッファ216Cに記憶されているデータを位置付けるために使用することができる情報、例えばポインタ及びストライドを含む。下記は、このような情報項目の例を提供する:
vertexInPtr:入力頂点位置を含むバッファへのポインタを含む変数。1つ以上の実施形態に従うと、この変数の値は、NULLとすることができる。制限しない例として、2次プロセッサによって実行されている照射処理プログラムは、処理が無限の照射処理モデルに関係する場合に、頂点に関連づけられた位置情報の代わりに、法線を使用するかもしれない。処理がスポットライト処理または位置の照射処理モデルのうちの1つ以上のものに関係する場合、vertexInPtrは、処理されるべき1つ以上の頂点に対する位置データを記憶している記憶装置へのポインタとして使用することができる。]
[0074] vertexOutPtr:スキン処理された頂点を2次プロセッサが書き込むことができるバッファへのポインタを含む変数。vertexOutPtr変数は、2次プロセッサがスキン処理を実行する場合に使用される。]
[0075] colorsInPtr:頂点色(RGBA)を記憶しているバッファへのポインタを含む変数。赤、緑、青及びアルファ値の組の各々の組は、頂点色グループを含む。2面の照射処理が実行される場合、バッファは、そのバッファ中に連続で2つの頂点色グループを記憶する。各々の頂点色グループは、現在のcolorInPtr値にvertexOutSize変数の値を加えることによって、次の頂点色グループを位置付けることができるように、vertexOutSizeバイトだけ分離されている。colorInPtr変数がNULL値を有する場合、は、各々の頂点に対する入力色グループとして、マテリアルデータ構造が使用される。]
[0076] colorOutPtr:2次プロセッサによって生成された色出力を記憶しているバッファへのポインタを含む変数。2面の照射処理がイネーブルにされている場合に各々の頂点に対して、2次プロセッサによって2つの色グループは連続で出力される。各々の頂点色グループは、vertexOutSizeバイトだけ分離されている。]
[0077] normalsInPtr:vertexInPtrによって指される頂点、例えば2次処理プロセッサによって現在処理されている頂点に対応する頂点法線を含んでいるバッファへのポインタを含む変数。normalsInPtr変数がNULL値を有する場合、2次プロセッサは、全ての頂点に対してCurrentNormalを使用する。]
[0078] boneIndicesPtr:頂点をスキン処理する際に使用するためのマトリックスパレットにインデックスを付けるバイトの配列へのポインタを含む変数。制限しない例として、インデックスの数は、例えばboneCount変数によって示されるように、頂点あたりのボーンの数かける頂点の数に等しい。]
[0079] boneWeightsPtr:頂点スキンプロセスの間に使用することができるs15.16ボーン重み付けを含んでいるバッファを指す変数。制限しない例として、重み付けの数は、例えばboneCount変数によって示されるように、頂点あたりのボーンの数かける頂点の数に等しい。]
[0080] vertexInSize:(頂点毎の)1つの入力頂点構造に含まれているバイト数を示す変数。制限しない例として、この変数と関連づけられた値は、頂点バッファ中の次の頂点位置を計算するためにストライドとして使用することができる。]
[0081] vertexOutAndColorSize:(頂点毎の)1つの出力頂点構造に含まれているバイト数を識別する変数。制限しない例として、この変数と関連づけられた値は、色または位置のいずれか一方に対する次の出力位置を計算するためにストライドとして使用することができる。]
[0082] numDimensions:位置ベクトル(3=XYZ)、(4=XYZW)毎に要素の数を指定する変数。その数が3である場合、Wは、1.0であると仮定することができる。制限しない例として、この変数と関連づけられた値は、次の頂点に対する位置データへのポインタを計算するためにストライドとして使用することができる。]
[0083] 情報項目908は、2次処理において使用することができる他の処理情報を含む。下記は、このような情報項目の例を提供する:
CurrentNormal(XYZ):normalsInPtrがNULLポインタ値である場合に使用される法線を含む変数。この法線は、コマンドストリームにおいて参照されている全ての頂点に適用される。]
[0084] rescaleNormalsFlag:頂点法線を再基準化すべきかどうかを示す変数。フラグが(例えば、0xFFFFFFFFの値に)設定されている場合、2次プロセッサは、オープンGL−ES仕様(セクション2.11.3)につき、照射処理均等化の前に頂点法線を再基準化する。]
[0085] RescaleNormalizeFlag:いつ頂点法線を再基準化すべきかを示す変数。最初の意味のあるビット、例えばビット0が設定されている場合、2次プロセッサは、オープンGL−ES仕様(セクション2.11.3)において明示されているように、照射処理の前だが変換の後に法線を正規化する。ビット1が設定されている場合、2次プロセッサは、オープンGL使用において述べられるように再基準化法線アルゴリズムを使用することができ、または、全ての場合において標準正規化を使用することができる。正規化は全ての場合において使用することができるので、法線を正規化することが適切であるときはいつでもビット0を設定することができ、代替として、再基準化法線を使用することが2次プロセッサに許されているときにはビット1も設定することができる。]
[0086] twoSidedLightingFlag:2面の照射処理を実行すべきかどうかを示す変数。フラグが(例えば0xFFFFFFFFの値に)設定されている場合、2次プロセッサは、(法線に関して)頂点の各々の側に対して1つというように、頂点毎に2つの色を計算する。1つ以上の実施形態に従うと、twoSidedLightingFlagを使用して、頂点に関連づけられた複数の色、例えば各々の側に対して1つあるということを示すことができる。]
[0087] lightingEnabledFlag:照射処理を実行すべきかどうかを示すために使用される変数。フラグが(例えば0xFFFFFFFFの値に)設定されている場合、2次プロセッサは頂点上で照射処理計算を実行し、twoSidedLightingフラグがイネーブルにされているかどうかに依存して、頂点毎に1つまたは2つの色を出力する。1つ以上の実施形態に従うと、lightingEnabledFlagは、照射処理が複数の動作、例えば照射処理及びスキン処理を実行する2次処理の間に任意に実行される場合に使用することができる。]
[0088] numActiveLights:頂点毎に適用されるライトの数を指定する変数。1つ以上の実施形態に従うと、8つまでのライトがサポートされ、アクティブなライトは番号順である。(例えば3つのアクティブなライトはライト0,1,2を参照する)
numLightsUpdated:lightingInfoPtr変数値によって指される照射処理情報配列の数を指定する変数。1つ以上の実施形態に従うと、現在のコマンドに対して照射処理計算が頂点上で実行される前に、コマンドとともに送られるライト情報配列は更新されるべきであり、更新されていない任意のアクティブなライトは、その前の値を使用する。]
[0089] lightUpdateMask:lightingInfoArrayPtrを使用してどのライトが更新されるべきであるかを示すビットフィールドを含む変数。ビットセットの数は、numLightsUpdatedのエントリに対応する。最下位ビットはライト0に対応し、ビット7はライト7に対応する。最上位ビットが設定(0x8000)されている場合、現在のコマンド対して、更新されたマテリアル構造がある。]
[0090] Material:照射処理モデルデータが更新されている場合、照射処理モデルデータを更新するために、必要であるならば、使用することができるデータ構造。この構造の存在は、lightUpdateMask変数の最上位ビットの値を設定することによって識別することができる。マテリアルデータ構造の定義の例は、以下に提供される。]
[0091] UpdatedLights:照射処理情報構造の数、例えばnumLightsUpdatedを(必要とされる場合)含むデータ構造。その各々は、最後のコマンドから変化しているライトに対する新しいデータを含む。1つ以上の実施形態に従うと、2次処理は、lightUpdateMask変数を使用して、更新されている実際のライトにライト構造をマッピングする。]
[0092] boneCount:スキン処理の中で使用される頂点毎にボーンの数を含む変数。1つ以上の実施形態に従うと、値が0と等しい場合、2次プロセッサは、マトリックスパレット[0]を適用する。それは、MVTを含むが、この場合においては変換された頂点を出力しない。例えば、その結果、アイスペース頂点は、照明処理計算のみのために使用される。]
[0093] matrixPalettePtr−最後のCCGからのマトリックスパレットエントリ変化を含む4x4固定点マトリックスのバッファへのポインタを含む変数。このバッファのサイズは、includedMatricesSizeエントリによって示され、インデックスマップは、MPInUseビットマスクに含まれる。]
[0094] includedMatricesSize:matrixPalettePtrによって指されるマトリックスパレットのバイトでのサイズを示す変数。1つ以上の実施形態に従うと、バッファは、更新されたマトリックスだけを含む必要があり、MPInUseマスク変数におけるフィールドを使用して、データをコピーするための適切なインデックス位置を決定する。]
[0095] MPInUse0−15:各々のビットセットが、matrixPalettePtr変数によって指されるバッファに含まれる更新されたマトリックスパレットに対応している、16ビットマスク。最下位ビットは、マトリックスインデックス0に対応する。その一方で、例えば、最上位ビットは、マトリックスインデックス15に対応する。]
[0096] MPInUse16−31:各々のビットセットが、matrixPalettePtrによって指されるバッファに含まれる更新されたマトリックスパレットに対応している16ビットマスク。最下位ビットはマトリックスインデックス16に対応する。その一方で、例えば、最上位ビットは、マトリックスインデックス31に対応する。]
[0097] MPInUse32−47:各々のビットセットが、matrixPalettePtrによって指されるバッファに含まれる更新されたマトリックスパレットに対応している16ビットマスク。最下位ビットはマトリックスインデックス32に対応する。その一方で、例えば、最上位ビットは、マトリックスインデックス47に対応する。]
[0098] 下記は、本開示の1つ以上の実施形態に従って実行される2次処理によって、例えば、照射処理によって使用することができるマテリアルデータ構造の内容の例を提供する。]
[0099] Light Model Ambient Scene Color(RGBA)−照射処理モデルに対して使用することができるAmbient Scene色の組を含む。]
[0100] Material Emissive(RGBA)−Material Emissive色に対して使用することができる固定点RGBA色の組を含む。]
[0101] Material Ambient(RGBA)−Material Ambient色に対して使用することができる固定点RGBA色の組を含む。]
[0102] Material Diffuse(RGBA)−Material Diffuse色に対して使用することができる固定点RGBA色の組を含む。]
[0103] Material Specular(RGBA)−Material Specular色に対して使用することができる固定点RGBA色の組を含む。]
[0104] Material Specular Exponent−固定点Material Specular Exponent係数を含む。それは、0.0及び128.0の間の範囲にわたることができる。]
[0105] 下記は、データ構造、例えばライトモデルデータ構造の付加的な例を提供することができる。これは、1つ以上の実施形態に従って2次処理によって使用することができる。制限しない例として、ライトモデルデータ構造は、2次処理の中で実行される照射処理の中で使用される各々のライトモデルに対して存在することができる。]
[0106] Ambient(RGBA)−Ambient Light Componentに対する固定点値を含む。]
[0107] Spotlight Vector(XYZ)−スポットライトが使用される場合、スポットライト方向ベクトルを含む。]
[0108] Diffuse(RGBA)−Diffuse Componentに対する固定点値を含む。]
[0109] Specular(RGBA)−Specular Componentに対する固定点値を含む。]
[0110] Spotlight Cutoff Cosine−スポットライトに対するコサインカットオフ値を含む。例えば、コサイン値は、1.0から0.0(0度から90度)または−1(180度)までの範囲にわたることができる。−1(180度)の特別な場合において、ライトは、スポットライトではなく、全方向のライトである。]
[0111] Spotlight Exponent−スポットライトが使用される場合、固定点Spotlight Exponentを含む。]
[0112] Light Position(XYZW)−固定点ライト位置または方向を含む。W成分の値が0である場合、そのときライトは無限の方向のライトであり、そうでなければポジショナルライトである。Wが0である場合、Attenuation及びSpotlight値は無視することができる。]
[0113] Attenuation Factor(一定)−減衰係数に対する一定の値を含む。]
[0114] Attenuation Factor(1次)−減衰係数の1次成分を含む。]
[0115] Attenuation Factor(2次)−減衰係数の2次成分を含む。]
[0116] 本開示の実施形態は、システム、方法及び装置を提供する。その中で2次プロセッサユニットは、グラフィックスパイプラインデータ上で動作するように構成されている。グラフィックスパイプラインにおいて実行する1つ以上のモジュールに対して出力が利用可能となるように、2次プロセッサからの出力は、グラフィックスパイプラインに統合されている。このような実施形態に従うと、2次プロセッサを使用するかどうかについて決定が行われ、2次プロセッサが使用されるべきである場合、1つ以上のコマンドを含むことができるコマンドストリームが2次プロセッサに提供される。2次処理は、コマンドストリームに含まれる情報を使用し、1つ以上のグラフィックスパイプライン処理モジュールと同期してバッファに入れられたグラフィックスパイプラインデータ上で動作する。その結果、2次プロセッサの処理モジュールも、どんなグラフィックスパイプライン処理モジュールもデータに上書きしない。SPMMは、2次処理モジュールの処理ステータスを含むフィードバック情報を使用して、グラフィックスパイプライン処理モジュール及び2次処理モジュールによるデータアクセスを同期させるために1つ以上のSPIMと組み合わさって動作する。]
[0117] そうすることにおいて、本開示の実施形態は、利用可能な2次プロセッサを使用して処理負荷のバランスを保たせる能力を提供する。そうでなければアイドルであるままであるかもしれない2次プロセッサを使用して、グラフィックス処理ユニットによって実行されるグラフィックスパイプライン処理及び/または中央処理ユニット、すなわち他の処理ユニットによって実行される処理を促進することができる。したがって、例えば、そうでなければ処理リソースを待つかもしれない動作は、利用可能な2次プロセッサに向けることができる。これは、より速いスループットになる。2次プロセッサが使用されていない処理上で2次プロセッサを使用して、例えばフレーム/秒において測定されるスループットにおいて増加があるということが測定されていることは有利なことである。更に、本開示の実施形態は、2次処理からフィードバックされた情報を使用して、負荷のバランス処理を実行することができる。フィードバックを使用して、例えば、いつ2次プロセッサがあるしきい値処理レベルに達しているかを決定することができる。2次プロセッサがしきい値処理能力に達することが決定されるとき、処理は、中央処理ユニットのような、別の処理ユニットに向けることができる。]
[0118] 更に、本開示の実施形態は、その1次処理目的以外のために処理ユニットを使用し、このような処理ユニットが利用可能である場合に1つ以上の他の2次機能を実行する能力を提供する。そうでなければアイドルであるかもしれないこのようなハードウェア、例えば処理ユニットの使用は、ハードウェアのより効率的な使用となる。]
[0119] 1つ以上の例示的な実施形態において、記述されている機能は、ハードウェア、ソフトウェア、及び/またはファームウェア、またはそれらの任意の組み合わせにおいて実現することができる。ハードウェアにおいて実現される場合、機能は、1つ以上のマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)またはそれと同様なものにおいて実現することができる。このような構成要素は、通信システム、データ書き込み及び/または読み込みシステム、あるいは他のシステムに存することができる。ソフトウェアにおいて実現される場合、機能は、コンピュータ読み取り可能媒体上に、1つ以上の命令またはコードとして記憶させることができ、また、1つ以上の命令またはコードとしてコンピュータ読み取り可能媒体上で送信することができる。コンピュータ読み取り可能媒体は、ある場所から別の場所にコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体及びタンジブルコンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスすることができる任意の利用可能な媒体とすることができる。制限でない例として、このようなコンピュータ読み取り可能媒体は、RAM、フラッシュメモリ、リードオンリーメモリ(ROM)、電気的消去可能でプログラム可能なリードオンリーメモリ(EEPROM)、コンパクトディスクリードオンリーメモリ(CD−ROM)または他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、またはコンピュータによってアクセスすることができ、データ構造または命令の形態で望まれるプログラムコードを記憶するために使用することができる他の任意の媒体を含むことができる。“コンピュータ読み取り可能媒体”という用語はまた、タンジブルコンピュータプログラム製品として定義することもできる。ここで用いられるディスク(disk)及びディスク(disc)は、コンパクト・ディスク(disc)(CD)、レーザー・ディスク(disc)、光ディスク(disc)、デジタル・バーサタイル・ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)及びブルーレイ(登録商標)・ディスク(disc)を含み、“ディスク(disk)”は通常データを磁気的に再生するのに対し、“ディスク(disc)”はレーザによって光的にデータを再生する。上記の組み合わせもまた、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。]
[0120] 最も実際的で好ましい実施形態であると現在考えられる点から装置及び方法を記述したが、開示が開示された実施形態に制限される必要がないことが理解されるべきである。特許請求の範囲の精神及び範囲内に含まれる様々な変更及び同様の構成をカバーすることが意図されている。その範囲は、全てのこのような変更及び同様の構造を包含するように最も広い解釈と一致されるべきである。本開示は、以下の特許請求の範囲の任意の及び全ての実施形態を含む。]
权利要求:

請求項1
ドロー要求に応じて、処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが1次処理機能を有することと、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記1次処理機能以外の2次処理機能を実行するために、前記処理ユニットの割り付けを要求することと、前記割り付け要求が成功した場合に、グラフィックスパイプラインデータを前記処理ユニットに利用可能にすることと、前記処理ユニットの処理ステータスを監視することと、前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合することとを具備する、方法。
請求項2
前記処理ユニットはデジタル信号プロセッサを備え、前記2次処理機能は1つ以上の照射処理機能を備える、請求項1に記載の方法。
請求項3
前記処理ユニットはデジタル信号プロセッサを備え、前記2次処理機能は1つ以上のスキン処理機能を備える、請求項1に記載の方法。
請求項4
前記処理ユニットがその1次処理機能を実行しているかどうかを決定することと、前記処理ユニットがその1次処理機能を実行していない場合に前記処理ユニットを割り付けることとを更に具備する、請求項1に記載の方法。
請求項5
前記割り付け要求が成功した場合に、前記方法は、前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成することを更に具備する、請求項1に記載の方法。
請求項6
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合することは、1つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別することと、前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定することと、前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記1つ以上のグラフィックスパイプライン処理モジュールをさせることとを更に備える、請求項1に記載の方法。
請求項7
グラフィックスパイプラインを実行するように構成されているグラフィックス処理ユニットと、前記グラフィックス処理ユニットに結合されている2次処理マネージャとを具備し、前記2次処理マネージャは、前記2次処理マネージャに結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定するように構成され、前記処理ユニットが1次処理機能を有し、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記1次処理機能以外の2次処理機能を実行するために、前記処理ユニットの割り付けを要求するように構成され、前記割り付け要求が成功した場合に、前記2次処理マネージャは、グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、前記処理ユニットの処理ステータスを監視し、前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するように更に構成されている、装置。
請求項8
前記処理ユニットはデジタル信号プロセッサを備え、前記2次処理機能は1つ以上の照射処理機能を備える、請求項7に記載の装置。
請求項9
前記処理ユニットはデジタル信号プロセッサを備え、前記2次処理機能は1つ以上のスキン処理機能を備える、請求項7に記載の装置。
請求項10
前記2次処理マネージャに結合されている割り付け器を更に具備し、前記割り付け器は、前記前記処理ユニットがその1次処理機能を実行しているかどうかを決定し、前記処理ユニットがその1次処理機能を実行していない場合に前記処理ユニットを割り付けるように構成されている、請求項7に記載の装置。
請求項11
前記割り付け要求が成功した場合に、前記2次処理マネージャは、前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成するように更に構成されている、請求項7に記載の装置。
請求項12
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するように構成されている前記2次処理マネージャは、1つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別し、前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定し、前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記1つ以上のグラフィックスパイプライン処理モジュールをさせるように更に構成されている、請求項7に記載の装置。
請求項13
コンピュータ実行可能なプログラムコードが記憶されているコンピュータ読み取り可能なメモリ媒体であって、前記プログラムコードは、ドロー要求に応じて、処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが1次処理機能を有し、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記1次処理機能以外の2次処理機能を実行するために、前記処理ユニットの割り付けを要求し、前記割り付け要求が成功した場合に、グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、前記処理ユニットの処理ステータスを監視し、前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するためのコードを備える、コンピュータ読み取り可能なメモリ媒体。
請求項14
前記処理ユニットはデジタル信号プロセッサを備え、前記2次処理機能は1つ以上の照射処理機能を備える、請求項13に記載の媒体。
請求項15
前記処理ユニットはデジタル信号プロセッサを備え、前記2次処理機能は1つ以上のスキン処理機能を備える、請求項13に記載の媒体。
請求項16
処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定するための前記プログラムコードは、前記処理ユニットがその1次処理機能を実行しているかどうかを決定するためのコードを更に備える、請求項13に記載の媒体。
請求項17
前記処理ユニットがその1次処理機能を実行しているかどうかを決定し、前記処理ユニットがその1次処理機能を実行していない場合に前記処理ユニットを割り付けるためのプログラムコードを更に備える、請求項13に記載の媒体。
請求項18
前記割り付け要求が成功した場合に、前記プログラムコードは、前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成するためのコードを更に備える、請求項13に記載の媒体。
請求項19
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するためのプログラムコードは、1つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別し、前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定し、前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記1つ以上のグラフィックスパイプライン処理モジュールをさせるためのプログラムコードを更に備える、請求項13に記載の媒体。
請求項20
グラフィックスパイプラインを実行するように構成されているグラフィックス処理ユニットと、前記グラフィックス処理ユニットに結合されている2次処理管理手段とを具備し、前記2次処理管理手段は、前記2次処理管理手段に結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが1次処理機能を有する手段と、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記1次処理機能以外の2次処理機能を実行するために、前記処理ユニットの割り付けを要求する手段とを備え、前記割り付け要求が成功した場合に、前記2次処理管理手段は、グラフィックスパイプラインデータを前記処理ユニットに利用可能にする手段と、前記処理ユニットの処理ステータスを監視する手段と、前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する手段とを更に備える、装置。
請求項21
前記処理ユニットはデジタル信号プロセッサを備え、前記2次処理機能は1つ以上の照射処理機能を備える、請求項20に記載の装置。
請求項22
前記処理ユニットはデジタル信号プロセッサを備え、前記2次処理機能は1つ以上のスキン処理機能を備える、請求項20に記載の装置。
請求項23
前記2次処理管理手段に結合されている割り付け手段を更に具備し、前記割り付け手段は、前記処理ユニットがその1次処理機能を実行しているかどうかを決定する手段と、前記処理ユニットがその1次処理機能を実行していない場合に前記処理ユニットを割り付ける手段とを備える、請求項20に記載の装置。
請求項24
前記割り付け要求が成功した場合に、前記2次処理管理手段は、前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成する手段を更に具備する、請求項20に記載の装置。
請求項25
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する手段は、1つ以上のグラフィックパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別する手段と、前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定する手段と、前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記1つ以上のグラフィックパイプライン処理モジュールをさせる手段とを備える、請求項20に記載の装置。
类似技术:
公开号 | 公开日 | 专利标题
US20180189923A1|2018-07-05|Draw call visibility stream
US9978115B2|2018-05-22|Sprite graphics rendering system
US20180047129A1|2018-02-15|Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US20170372450A1|2017-12-28|Apparatus and method for non-uniform frame buffer rasterization
JP6258293B2|2018-01-10|グラフィックス処理におけるパッチされたシェーディング
JP5345226B2|2013-11-20|グラフィックスプロセッサの並列アレイアーキテクチャ
US10614549B2|2020-04-07|Varying effective resolution by screen location by changing active color sample count within multiple render targets
DE102015113240A1|2016-02-18|System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
CN105283900B|2019-11-01|用于压缩顶点着色器输出参数的方案
US20160071234A1|2016-03-10|Block-based lossless compression of geometric data
KR101563098B1|2015-10-23|커맨드 프로세서를 갖는 그래픽 프로세싱 유닛
JP6310151B2|2018-04-11|グラフィックス処理におけるレンダリング対象コマンドの並べ替え
US8284207B2|2012-10-09|Method of generating digital images of objects in 3D scenes while eliminating object overdrawing within the multiple graphics processing pipeline | of a parallel graphics processing system generating partial color-based complementary-type images along the viewing direction using black pixel rendering and subsequent recompositingoperations
US8659589B2|2014-02-25|Leveraging graphics processors to optimize rendering 2-D objects
JP2018060556A|2018-04-12|グラフィック処理ユニットにおける視界ベースの状態更新
US8111260B2|2012-02-07|Fast reconfiguration of graphics pipeline state
US10255650B2|2019-04-09|Graphics processing using dynamic resources
KR101134241B1|2012-04-09|그래픽 처리 유닛에서 프레그먼트 셰이더 바이패스, 및 이를 위한 장치 및 방법
JP5847960B2|2016-01-27|グラフィックス処理における直接レンダリングとビニングとの間の切り換え
US6417858B1|2002-07-09|Processor for geometry transformations and lighting calculations
US9412193B2|2016-08-09|Run-time optimized shader program
EP1725989B1|2014-04-16|Register based queuing for texture requests
US10733691B2|2020-08-04|Fragment shaders perform vertex shader computations
US10699464B2|2020-06-30|Graphics library extensions
EP2956881B1|2017-03-08|Hardware enforced content protection for graphics processing units
同族专利:
公开号 | 公开日
KR20120125395A|2012-11-14|
CN101911111B|2013-05-01|
CN101911111A|2010-12-08|
KR101386180B1|2014-04-17|
TW200935350A|2009-08-16|
US20090141033A1|2009-06-04|
US8922565B2|2014-12-30|
KR20100089896A|2010-08-12|
JP5032670B2|2012-09-26|
WO2009073516A1|2009-06-11|
EP2068279B1|2018-04-18|
EP2068279A1|2009-06-10|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
JP2002527824A|1998-10-14|2002-08-27|イクエイターテクノロジーズ、インコーポレイテッド|統合マルチメディアシステム|
US20050280654A1|2000-03-07|2005-12-22|Microsoft Corporation|API communications for vertex and pixel shaders|
JP2002132489A|2000-08-23|2002-05-10|Nintendo Co Ltd|グラフィクスシステム|
JP2003067758A|2001-06-28|2003-03-07|Hewlett Packard Co <Hp>|デジタル・ビデオ・パイプライン内で異なるグラフィックス形式を組み合わせるためのシステム|
JP2007503059A|2003-08-18|2007-02-15|エヌビディア・コーポレーション|マルチプロセッサ・グラフィックス処理システムの適応型負荷分散|
JP2005182825A|2003-12-18|2005-07-07|Nvidia Corp|マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ|
US20050210172A1|2004-03-02|2005-09-22|Ati Technologies Inc.|Processing real-time command information|
JP2005322224A|2004-05-03|2005-11-17|Microsoft Corp|拡張グラフィックスパイプラインを提供するシステムおよび方法|
WO2006034034A2|2004-09-16|2006-03-30|Nvidia Corporation|Load balancing|
US20070091089A1|2005-10-14|2007-04-26|Via Technologies, Inc.|System and method for dynamically load balancing multiple shader stages in a shared pool of processing units|JP2015529860A|2012-04-04|2015-10-08|クゥアルコム・インコーポレイテッドQualcomm Incorporated|グラフィックス処理におけるパッチされたシェーディング|US4866637A|1987-10-30|1989-09-12|International Business Machines Corporation|Pipelined lighting model processing system for a graphics workstation's shading function|
US6469746B1|1992-12-28|2002-10-22|Sanyo Electric Co., Ltd.|Multi-vision screen adapter|
US5798770A|1995-03-24|1998-08-25|3Dlabs Inc. Ltd.|Graphics rendering system with reconfigurable pipeline sequence|
US5764228A|1995-03-24|1998-06-09|3Dlabs Inc., Ltd.|Graphics pre-processing and rendering system|
KR100269106B1|1996-03-21|2000-11-01|윤종용|멀티프로세서 그래픽스 시스템|
US6191800B1|1998-08-11|2001-02-20|International Business Machines Corporation|Dynamic balancing of graphics workloads using a tiling strategy|
JP2000222590A|1999-01-27|2000-08-11|Nec Corp|画像処理方法及び装置|
US6545679B1|1999-12-27|2003-04-08|Microsoft Corporation|View volume clip-check in object space|
US6771269B1|2001-01-12|2004-08-03|Ati International Srl|Method and apparatus for improving processing throughput in a video graphics system|
US6919896B2|2002-03-11|2005-07-19|Sony Computer Entertainment Inc.|System and method of optimizing graphics processing|
US20040075623A1|2002-10-17|2004-04-22|Microsoft Corporation|Method and system for displaying images on multiple monitors|
US7034837B2|2003-05-05|2006-04-25|Silicon Graphics, Inc.|Method, system, and computer program product for determining a structure of a graphics compositor tree|
US6956579B1|2003-08-18|2005-10-18|Nvidia Corporation|Private addressing in a multi-processor graphics processing system|
US6985152B2|2004-04-23|2006-01-10|Nvidia Corporation|Point-to-point bus bridging without a bridge controller|
US6972769B1|2004-09-02|2005-12-06|Nvidia Corporation|Vertex texture cache returning hits out of order|
US20070091088A1|2005-10-14|2007-04-26|Via Technologies, Inc.|System and method for managing the computation of graphics shading operations|
CN1928918B|2005-10-14|2012-10-10|威盛电子股份有限公司|图形处理装置及于图形处理装置中执行着色操作的方法|
US7325086B2|2005-12-15|2008-01-29|Via Technologies, Inc.|Method and system for multiple GPU support|
US8284204B2|2006-06-30|2012-10-09|Nokia Corporation|Apparatus, method and a computer program product for providing a unified graphics pipeline for stereoscopic rendering|
US8120608B2|2008-04-04|2012-02-21|Via Technologies, Inc.|Constant buffering for a computational core of a programmable graphics processing unit|US20110043518A1|2009-08-21|2011-02-24|Nicolas Galoppo Von Borries|Techniques to store and retrieve image data|
US8817031B2|2009-10-02|2014-08-26|Nvidia Corporation|Distributed stream output in a parallel processing unit|
US8810592B2|2009-10-09|2014-08-19|Nvidia Corporation|Vertex attribute buffer for inline immediate attributes and constants|
US8963797B2|2010-01-06|2015-02-24|Apple Inc.|Display driving architectures|
CN103105959A|2011-11-09|2013-05-15|昆盈企业股份有限公司|数字绘图系统及其数字调色方法|
US9019289B2|2012-03-07|2015-04-28|Qualcomm Incorporated|Execution of graphics and non-graphics applications on a graphics processing unit|
WO2013137894A1|2012-03-16|2013-09-19|Intel Corporation|Techniques for a secure graphics architecture|
KR20130123645A|2012-05-03|2013-11-13|삼성전자주식회사|그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법|
JP6116941B2|2013-02-28|2017-04-19|株式会社東芝|情報処理装置|
CN103164839B|2013-03-07|2019-06-21|华为技术有限公司|一种绘图方法、装置及终端|
US9449410B2|2013-04-11|2016-09-20|Qualcomm Incorporated|Intra-frame timestamps for tile-based rendering|
CN103327413A|2013-06-26|2013-09-25|四川长虹电器股份有限公司|一种在智能电视中实现alpha动画的方法|
WO2015154004A1|2014-04-05|2015-10-08|Sony Computer Entertainment America Llc|Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters|
US10068311B2|2014-04-05|2018-09-04|Sony Interacive Entertainment LLC|Varying effective resolution by screen location by changing active color sample count within multiple render targets|
US9710881B2|2014-04-05|2017-07-18|Sony Interactive Entertainment America Llc|Varying effective resolution by screen location by altering rasterization parameters|
US9495790B2|2014-04-05|2016-11-15|Sony Interactive Entertainment America Llc|Gradient adjustment for texture mapping to non-orthonormal grid|
US9836816B2|2014-04-05|2017-12-05|Sony Interactive Entertainment America Llc|Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport|
US9710957B2|2014-04-05|2017-07-18|Sony Interactive Entertainment America Llc|Graphics processing enhancement by tracking object and/or primitive identifiers|
US9865074B2|2014-04-05|2018-01-09|Sony Interactive Entertainment America Llc|Method for efficient construction of high resolution display buffers|
US9652882B2|2014-04-05|2017-05-16|Sony Interactive Entertainment America Llc|Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location|
US10783696B2|2014-04-05|2020-09-22|Sony Interactive Entertainment LLC|Gradient adjustment for texture mapping to non-orthonormal grid|
US10685473B2|2017-05-31|2020-06-16|Vmware, Inc.|Emulation of geometry shaders and stream output using compute shaders|
US10818067B1|2019-05-31|2020-10-27|Texas Instruments Incorporated|GPU assist using DSP pre-processor system and method|
法律状态:
2012-01-11| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120110 |
2012-04-05| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20120404 |
2012-04-12| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20120411 |
2012-04-27| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120426 |
2012-05-22| TRDD| Decision of grant or rejection written|
2012-05-30| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120529 |
2012-05-31| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 |
2012-07-05| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120628 |
2012-07-06| R150| Certificate of patent or registration of utility model|Ref document number: 5032670 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
2012-07-09| FPAY| Renewal fee payment (event date is renewal date of database)|Free format text: PAYMENT UNTIL: 20150706 Year of fee payment: 3 |
2015-07-07| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2016-07-05| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2017-07-11| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2018-07-10| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2019-07-09| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2020-06-30| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2021-06-30| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]